package xin.marcher.module.construction.service;

import xin.marcher.module.common.core.PageResult;
import xin.marcher.module.construction.builder.FullProductData;
import xin.marcher.module.construction.domain.dto.AuditInfoDTO;
import xin.marcher.module.construction.domain.dto.DraftDetailDTO;
import xin.marcher.module.construction.domain.dto.ExecAuditDTO;
import xin.marcher.module.construction.domain.request.AuditRequest;
import xin.marcher.module.construction.domain.request.FullDraftDataRequest;
import xin.marcher.module.construction.domain.request.QueryDraftRequest;
import xin.marcher.module.construction.domain.request.QueryTodoListRequest;

/**
 * 审核服务
 */
public interface AuditService {

    /**
     * 判断是否需要进行审批操作
     *
     * @param auditContentDTO
     * @param createFlag
     */
    Boolean needAudit(FullProductData auditContentDTO, Boolean createFlag);

    /**
     * 保存草稿信息
     *
     * @param fullDraftDataRequest
     * @return void
     */
    void saveDraft(FullDraftDataRequest fullDraftDataRequest);

    /**
     * 获取待办列表
     *
     * @param queryTodoListRequest
     */
    PageResult<AuditInfoDTO> getTodoList(QueryTodoListRequest queryTodoListRequest);

    /**
     * 获取草稿详情
     *
     * @param queryDraftRequest
     */
    DraftDetailDTO getDraftDetail(QueryDraftRequest queryDraftRequest);

    /**
     * 执行审核
     *
     * @param auditRequest
     */
    ExecAuditDTO execAudit(AuditRequest auditRequest);
}
